home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 3.iso / bin / perl_check < prev    next >
Text File  |  1996-11-11  |  6KB  |  257 lines

  1. #!/bin/ksh -p
  2. # setup correct directory from which to run Developer Toolbox
  3.  
  4. export PATH="/usr/bsd:/bin:/usr/bin:/usr/sbin:/usr/bin/X11"
  5. fullprog=$0
  6. typeset -r prog=${0##*/}
  7. progdir=${0%/*}
  8. if [[ "$progdir" = \/* ]]; then
  9.     typeset -r fullprogdir="$progdir"
  10. else
  11.     [[ "$progdir" = "$fullprog" ]] && progdir="."
  12.     cwd=$(pwd)
  13.     cd $(pwd)/$progdir
  14.     fullprogdir=$(pwd)
  15.     cd $cwd
  16.     typeset -r fullprogdir=$fullprogdir
  17. fi
  18. typeset -r fullprog="$fullprogdir/$prog"
  19. typeset -r progdir=$progdir
  20. typeset -r flags="hr"
  21. typeset -r getoptflags=":${flags}f:\?"
  22. typeset -r usage="Usage: $prog [-${flags}] [-f dir]"
  23. typeset -r numpositional=0
  24. if [[ "$TMPDIR" != "" ]]; then
  25.     typeset -r tmpdir="$TMPDIR"
  26. elif [[ -d /usr/var/tmp ]]; then
  27.     typeset -r tmpdir="/usr/var/tmp"
  28. else
  29.     typeset -r tmpdir="/tmp"
  30. fi
  31. typeset -r tmp=$tmpdir/$prog.$$
  32. cleanuplist="$tmp"
  33. typeset -r SigList="INT QUIT TERM HUP"
  34. typeset errexit=0
  35. trap "trap - EXIT $SigList; CleanUp" EXIT
  36. trap exit $SigList
  37.  
  38. # include this at beginning of each function as well
  39. if [ "$DEBUG" ] ; then set -$DEBUG ; : Debug enabled by envariable ; fi
  40.  
  41. Usage () {
  42.     echo "$usage"
  43.     echo "    -h        Help text (this stuff)."
  44.     echo "    -r        Remove local viewDT directory."
  45.     echo "    -f dir        Run from directory dir."
  46. }
  47.  
  48. Exit() {
  49.     [ "$1" ] && echo "$*" >&2
  50.     errexit=1
  51.     exit
  52. }
  53.  
  54. UsageExit() {
  55.     [ "$1" ] && echo "$*" >&2
  56.     Usage >&2
  57.     Exit 
  58. }
  59.  
  60. Log () {
  61.     [[ "$verbose" = yes ]] && echo >&2 "$@"
  62. }
  63.  
  64. Do () {
  65.     [[ ! -z "$verbose" || ! -z "$noexecute" ]] && echo >&2 "$@"
  66.     [[ -z "$noexecute" ]] && "$@"
  67.     typeset evalstatus=$?
  68.     [[ ! -z "$noexecute" || $evalstatus = 0 ]]
  69. }
  70.  
  71. DoExit () {
  72.     Do $1 || Exit "$2"
  73. }
  74.  
  75. DoUsageExit () {
  76.     Do $1 || UsageExit "$2"
  77. }
  78.  
  79. CleanUp () {
  80.     : Add your own clean-up actions here
  81.  
  82.     eval /bin/rm -fr $cleanuplist
  83.     exit $errexit
  84. }
  85.  
  86. # Setexecutable variable_to_set executable absolute_path
  87. # also looks in same place this code came from
  88. SetExecutable () {
  89.     set -$DEBUG
  90.     typeset executable
  91.     executable=$(whence $2)
  92.     if [ "$executable" = "''" ] ; then
  93.             executable=$(whence $progdir/$2)
  94.             if [ "$executable" = "''" ] ; then
  95.                     executable=$3
  96.             fi
  97.     fi
  98.     [ -x $executable ] || return 1
  99. # this strips leading ././* to single ./
  100. #       [ "$( echo $executable | sed -e 's%^\./.*%%')" = "" ] &&
  101. #               executable="./${executable##*(./)}"
  102.     eval $1=\""$executable"\"
  103.     return 0
  104. }
  105.  
  106. SetExecExit () {
  107.     set -$DEBUG
  108.     SetExecutable $1 $2 $3 ||
  109.             Exit "Unable to locate $2 for execution"
  110. }
  111.  
  112. unset verbose noexecute removeDT viewDT_file
  113. while getopts ${getoptflags} flag; do
  114.     case $flag in
  115.     f)
  116.         viewDT_file="$viewDT_file $OPTARG"
  117.             ;;
  118.     h | \?)
  119.             Usage >&2
  120.             exit 
  121.             ;;
  122.     r)
  123.         removeDT=-r
  124.             ;;
  125.     esac
  126. done
  127. shift OPTIND-1
  128.  
  129. if (( $# != $numpositional )) ; then
  130.     Usage >&2
  131.     Exit
  132. fi
  133.  
  134. #functions
  135. ###############################################################################
  136.  
  137. bad_cd_msg() {
  138.     $DT_xconfirm error "\
  139.         The janitor needs to install perl from the\
  140.         \"Developer Toolbox 6.0\" CD\n\
  141.         which has a \"2\" printed by the rat's tail\n\
  142.         Please place it in the CDROM drive and re-run viewDT."
  143. }
  144.  
  145. root_test() {
  146.     ((root_checked=1))
  147.     /bin/id | read r _
  148.     if [[ "$r" != "uid=0(root)" ]]; then
  149.         $DT_xconfirm error \
  150.             "The janitor needs to temporarily be superuser\
  151.             to enable you to view the data of the toolbox.\n\n\
  152.             Please become superuser and then re-run viewDT."
  153.         Exit
  154.     fi
  155. }
  156. perl_load() {
  157.     root_test
  158.     if [[ ! -f $CDROM_ROOT/.IM ]]; then
  159.         bad_cd_msg
  160.         Exit
  161.     fi
  162.     grep "id" $CDROM_ROOT/.IM | head -1 | read _ _ id
  163.     if [[ "$id" != "\"58\"" ]]; then
  164.         bad_cd_msg
  165.         Exit
  166.     fi
  167.     cd $fullprogdir
  168.     rm -rf tmp_perl > /dev/null 2>&1
  169.     mkdir tmp_perl
  170.     cd tmp_perl
  171.     echo "    ... extracting freeware perl inst images"
  172.     tar xBf $CDROM_ROOT/toolbox/public/freeware1.0/fw_LWperl5/fw_LWperl5.tardist || Exit
  173.     echo "    ... installing freeware perl inst images"
  174.     inst -a -f . -I fw_LWperl5 -I fw_common -K fw_LWperl5.src.perl || Exit
  175.     echo "    ... symbolic linking freeware perl to /bin/perl"
  176.     rm -rf /bin/perl > /dev/null 2>&1
  177.     ln -s /usr/freeware/bin/perl /bin/perl || Exit
  178.     cd $fullprogdir
  179.     rm -rf tmp_perl > /dev/null 2>&1
  180. }
  181. symlink_chk() {
  182.     typeset need=$1 got r
  183.     [[ -f $need ]] && return
  184.     if [[ -f /usr/freeware/bin/perl ]]; then
  185.         got=/usr/freeware/bin/perl
  186.     elif [[ -f /usr/sbin/perl ]]; then
  187.         got=/usr/sbin/perl
  188.     else
  189.         $DT_xconfirm error "Unable to find perl on your system."
  190.         Exit
  191.     fi
  192.     if ((root_checked)); then
  193.         r=$($DT_xconfirm yesno \
  194.             "The janitor needs to create a symlink \
  195.             from $got to $need\n\n\
  196.             Should I make the symlink?\n\n\
  197.             Note: Without this symlink, you will not be able to\
  198.             view the toolbox.")
  199.         [[ "$r" = "No" ]] && Exit
  200.     else
  201.         r=$($DT_xconfirm yesno \
  202.             "The janitor needs to create a symlink \
  203.             from $got to $need\n\n\
  204.             IF you did not invoke viewDT as superuser,\n\
  205.             You will need to press No,\
  206.             become superuser and re-run viewDT\n\
  207.             Should I make the symlink?\n\n\
  208.             Note: Without this symlink, you will not be able to\
  209.             view the toolbox.")
  210.         [[ "$r" = "No" ]] && Exit
  211.         root_test
  212.     fi
  213.     echo "    ... symbolic linking freeware perl to $need"
  214.     rm -rf $need > /dev/null 2>&1
  215.     ln -s $got $need
  216. }
  217.  
  218. #start
  219. ###############################################################################
  220. typeset -i root_checked=0
  221. DT_xconfirm="$fullprogdir/DT_xconfirm"
  222. if [[ "$CDROM_ROOT" = "" ]]; then
  223.     $DT_xconfirm notviewDT
  224.     Exit
  225. fi
  226. if [[ ! -d $CDROM_ROOT/toolbox ]]; then
  227.     $DT_xconfirm error "\
  228.         You must run this as viewDT from\n\
  229.         a Developer Toolbox CD directory"
  230.     Exit
  231. fi
  232.  
  233. if [[ -f /usr/sbin/perl ]]; then
  234.     continue
  235. elif [[ -f /usr/freeware/bin/perl ]]; then
  236.     continue
  237. else
  238.      r=$($DT_xconfirm yesno \
  239.         "The janitor needs to install perl on your system.\n\
  240.         IF you did not invoke viewDT as superuser\n\
  241.         OR if the \"Developer Toolbox 6.0\" CD\n\
  242.         labeled with a \"2\" by the rat's tail\n\
  243.         is not in the CDROM drive,\n\
  244.         THEN you will need to press No and do these things.\n\n\
  245.         Should I install perl on your system?\n\
  246.         Note: Without perl, you will not be able to\
  247.         view the toolbox.")
  248.     [[ "$r" = "No" ]] && Exit
  249.     perl_load
  250. fi
  251. symlink_chk /bin/perl
  252. symlink_chk /usr/sbin/perl
  253. if ((root_checked)); then
  254.     echo "perl will now work correctly when you next run viewDT"
  255.     Exit
  256. fi
  257.